package com.aaa.qy127.service.impl;

import com.aaa.qy127.dao.RoleDao;
import com.aaa.qy127.dao.StaffDao;
import com.aaa.qy127.entity.Role;
import com.aaa.qy127.entity.Staff;
import com.aaa.qy127.service.RoleService;
import com.aaa.qy127.util.CodeAndMsg;
import com.aaa.qy127.util.Result;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;
import java.util.Map;

@Service("roleServiceImpl")
public class RoleServiceImpl implements RoleService {

    /*
    * 注入 RoleDao 接口
    * */
    @Resource(name = "roleDaoImpl")
    private RoleDao roleDao;

    @Resource(name = "StaffDaoImpl")
    private StaffDao staffDao;


    /**
     * 返回 role 的全部信息 用于 填充到 staff表中 的 角色下拉框中
     * @return
     */
    @Override
    public List<Map<String, Object>> selRole(){
        List<Map<String, Object>> allRole = roleDao.getAllRole();
        return allRole;
    }

    /**
     * 查询 全部的role 信息 用于 显示 所有的 role 信息
     * @return
     */
    @Override
    public Result selAllRole(){
        List<Map<String, Object>> allRole = roleDao.getAllRole();
        Result result = new Result(allRole.size(),allRole);
        return result;
    }

    /**
     * 新增或者修改一条信息
     * @param role
     * @return
     */
    @Override
    public CodeAndMsg insertAndUpdate(Role role){
        Integer rid = role.getRid();
        //System.out.println(role.getRid());
        CodeAndMsg codeAndMsg = new CodeAndMsg();
        if (rid == null){
            int i = roleDao.insertOneRole(role);
            if (i>0){
                codeAndMsg.setCode(1001);
                codeAndMsg.setMsg("新增成功");
            }else {
                codeAndMsg.setCode(1002);
                codeAndMsg.setMsg("新增失败");
            }
        }else {
            int i = roleDao.updateOneRole(role);
            if (i>0){
                codeAndMsg.setCode(1001);
                codeAndMsg.setMsg("修改成功");
            }else {
                codeAndMsg.setCode(1002);
                codeAndMsg.setMsg("修改失败");
            }
        }
        return codeAndMsg;
    }

    /**
     * 根据rid 删除 role 信息，通过rid 查询 staff 信息
     * 判断 该rid 是否有对应得staff 信息
     * 如果有  就不能删除
     * 如果没有 可以删除
     * @param rid
     * @return
     */
    @Override
    public CodeAndMsg deleteRole(String rid) {
        List<Map<String, Object>> staffByRid = staffDao.getStaffByRid(rid);
        CodeAndMsg codeAndMsg = new CodeAndMsg();
        if (staffByRid == null){
            int i = roleDao.deleteOneRole(rid);
            if (i>0){
                codeAndMsg.setCode(1001);
                codeAndMsg.setMsg("删除成功");
            }else {
                codeAndMsg.setCode(1002);
                codeAndMsg.setMsg("删除失败");
            }
        }else {
            codeAndMsg.setCode(1005);
            codeAndMsg.setMsg("正在使用，不能删除");
        }

        return codeAndMsg;
    }


}
